Introduksjon

Hvorfor bruke Jupyter Notebooks?

Det er to grunner til at dere lærer programmering på videregående:

  1. Dere skal bli bedre til å tenke algoritmisk – altså at dere bryter ned kompliserte problemer til enklere problemer som kan løses i ulike steg
  2. Dere skal bruke teknologi som gjør dere i stand til å løse problemer som er så kompliserte at de ikke kan løses uten hjelpemidler

Jupyter Notebooks er en type filer hvor du kan kombinere tekst, matematikk og programmering i samme fil. Det gjør at det blir enklere for deg å skrive ned forklaringer til programmene dine, og du kan lage en Notebook (notatblokk) til hvert tema vi programmerer. Istedenfor å sjekke 6 forskjellige filer med serielåneksempler, så kan du nå sjekke en fil hvor du både har tekst og eksempler.

Vi skal skrive Pythonkoden i programmet Visual Studio Code. Det gjør at datamaskinen automatisk fullfører navnene på funksjoner og på variabler, slik at du skriver mindre feil og får færre feilmeldinger.

Hva er spesielt med Jupyter Notebooks?

I motsetning til vanlige .py-filer kan Jupyter Notebooks blande kode, tekstforklaringer og resultater (for eksempel grafer og tabeller) i samme dokument.
Dette gjør at du kan forklare hva koden gjør samtidig som du viser kjøringen av den.

Dette er spesielt nyttig når du skal:

  • Dokumentere prosessen din steg for steg
  • Lære nye konsepter og ha forklaringer rett ved siden av koden
  • Lage rapporter der både teori, kode og resultater henger sammen

Jupyter Notebook-filer har filendelsen .ipynb.

Mappestruktur for programmering

Foreslått mattestruktur for programmering

Jeg anbefaler at du lager en egen mappe til programmeringen i matematikk. Du velger selv hvordan du gjør dette, men jeg vil anbefale at du har alle skolefilene dine i OneDrive-mappa på datamaskinen. Et eksempel på en fornuftig filstruktur er vist i figur 1.

Installasjon av programvare

For å kunne bruke Jupyter Notebooks må vi installere to programmer: Anaconda og Visual Studio Code.

Framgangsmåte for installasjon av programmer

Oppsett av programvare

Om Visual Studio Code

Visual Studio Code er et koderedigeringsprogram som kan brukes til alle programmeringsspråk. Vi skal bruke det til å skrive Python-kode ved hjelp av en funksjon som heter Jupyter notebooks.

Installere utvidelser i Visual Studio Code

Vi skal installere to utvidelser til Visual Studio Code for å kunne skrive Python-kode effektivt. Åpne først Visual Studio Code ved å åpne Start menyen (trykk på Windows-knappen) og skriv inn Code.

  1. Åpne Extensions → Søk etter Python → Trykk på Installer-knappen. Se figur 2.
  2. Åpne Extensions → Søk etter Jupyter → Trykk på Installer-knappen.
  3. [Frivillig:]{#black} Åpne Extensions → Søk etter Black Formatter → Trykk på Installer-knappen.

OBS! Alle disse tre utvidelsene er utviklet av Microsoft. Pass på at de er merket med ☑ Microsoft.

Installere utvidelser i Visual Studio Code

Deaktivere Copilot

  1. Åpne kommandopaletten ved å trykke knappene CtrlShiftP (eller velg ViewCommand Palette fra verktøylinja i toppen av programvinduet).
  2. Skriv inn Copilot disable.
  3. Du vil nå se flere valg, velg linjen med GitHub Copilot: Disable completions
Deaktivere Copilot

Copilot i Visual Studio Code er et kunstig intelligens-verktøy som hjelper oss å kode, blant annet ved at det foreslår hva vi bør skrive.

Det er et fantastisk verktøy, men for at vi mennesker skal lære, så er vi nødt til å tenke. Synapsene i hjernen din vil bli sterkere dersom det er du som finner løsningen, enn hvis du godtar løsningen til noen andre. Det tar litt lengre tid å gjøre det selv, men vi er tross alt på skolen for å lære og utvikle oss, ikke for å skrive mest mulig Pythonkode.

Oppstart av Visual Studio Code

  1. Velg FileOpen Folder og marker mappa til Python-programmene dine. Trykk på Velg mappe.
  2. Åpne kommandopaletten ved å trykke knappene CtrlShiftP (eller velg ViewCommand Palette fra verktøylinja i toppen av programvinduet).
  3. Velg Create: New Jupyter notebook. Du har nå opprettet en Jupyter Notebook. Dette er en fil som kan inneholde flere bokser med Python-kode og flere bokser med tekst.
  4. Du må velge en kernel for å kunne kjøre Python-koden. Velg Select Kernel og Python Environments…, se figur 3. Deretter velger du anaconda3, se figur 4.

 og

Velg kernelen som heter

Bruk av Jupyter Notebooks

En Jupyter Notebook (heretter kaller vi dem bare notatblokker) består av én eller flere bokser med kode eller tekst.

  1. Du legger til en ny boks med kode ved å trykke på + Code, se figur 5.
  2. Du legger til en ny boks med tekst ved å trykke på + Markdown, se figur 5.

Ved siden av boksene så finnes det en liten avspillingsknapp ▷ som kjører koden i boksen. Variabler som opprettes i en boks er også tilgjengelige i de andre boksene. På denne måten kan du fortsette et program over flere bokser om du ønsker. Output fra en boks vises direkte under boksen.

Opprett bokser og kjør kode

Legg gjerne merke til at notatblokken min ikke er lagret enda. Det kan du se ved at filen heter Untitled-1.ipynb, samtidig som du ser en hvit sirkel ved siden av filnavnet.

💾 Lagre ofte!

Du er nødt til å lagre din Jupyter Notebook selv. Du kan lagre på to måter:

  1. Tast hurtigtastene CtrlS.
  2. Velg FileSave fra menylinja helt i øvre, venstre hjørne av vinduet.

Bruk av notatblokker til Python

Etter at du har opprettet en ny kodeblokk med + Code-knappen er du klar til å skrive Pythonkode. Gjør en test allerede nå ved å legge inn et enkelt Pythonprogram og trykk på ▷.

a = 2
b = 3
c = a * b
print(c)
Hurtigtaster

  • Tast ShiftEnter for å kjøre koden i en boks istedenfor å trykke på ▷ knappen.
  • Tast AltShiftF for å formatere koden pent (krever at du installerte Black Formatter)
  • Tast ShiftL for å vise linjenummere i koden din (det er spesielt nyttig når du skal tolke feilmeldinger)

IntelliSense og hjelp uten internett

Når du skriver Pythonkode i Visual Studio Code, får du automatisk hjelp gjennom IntelliSense.
Dette gjør at programmet foreslår variabler, funksjoner og metoder mens du skriver.

Hvis du har importert mattefunksjoenen med import math, og du skriver math. så vil det komme opp en liste med alt som finnes i pakken math, som sin, cos og sqrt.
Hvis du holder musepekeren over en funksjon, får du ofte en kort forklaring på hva den gjør og hvilke argumenter den tar inn.

Dette er nyttig når du ikke husker alt utenat, eller når du ønsker å oppdage hvilke muligheter et bibliotek gir.

Finne riktig funksjon

Ofte lurer man på: "Hvilken funksjon skal jeg bruke?"

Dette gjør det lettere å lære nye biblioteker.

Hjelpefunksjoner i notatblokker

Selv uten internett kan du finne ut mye om hvordan funksjoner og pakker fungerer.

Hvis du skriver ? etter navnet på en funksjon så får du opp en kort dokumentasjon av funksjonen. Til venstre har jeg satt spørsmålstegn etter randint()-funksjonen for å finne ut hvordan denne fungerer. Til høyre ser du svaret fra Jupyter Notebook.

import random
random.randint?

Signature: random.randint(a, b)
Docstring:
Return random integer in range [a, b], including both end points.

Feilsøking i notatblokker

Hva er en debugger?

En debugger (engelsk for å fjerne bugs) er et feilsøkingsverktøy – det hjelper deg å finne feilene i programmet ditt. Feilsøkingsverktøyet er spesielt nyttig i de tilfellene hvor det ikke er noe åpenbart feil med programmet ditt, men du er usikker på om svarene riktige.

Feilsøkingsverktøyet (engelsk: debuggeren) i Visual Studio Code lar deg blant annet gå gjennom et Pythonprogram steg-for-steg. Du kan starte en enkel versjon av feilsøkingsverktøyet ved å markere en linje i koden din og taste F10 (du må sikkert holde inn Fn-tasten samtidig). Fortsett å taste F10 for å gå gjennom programmet ditt linje-for-linje. Du kan følge med på hvordan verdiene av variablene utvikler seg, slik som vist i figur 7.

💾 Husk å lagre!

Feilsøkingsverktøyet vil ikke fungere før du har lagret notatblokken din. CtrlShiftS

Bruke bruddpunkter til feilsøking

For å starte fullversjonen av feilsøkingsverktøyet må du først definere et bruddpunkt (engelsk: break point) i koden din, se figur 6. Dette gjøres ved å klikke i margen til venstre for kodeblokken. Veldig ofte ønsker vi å finne ut hva som skjer inni en løkke, da må du sette bruddpunktet på linja som starter løkka.

Bruddpunkt på linje 5

Etter at bruddpunktet er satt så kan du starte feilsøkingsverktøyet ved å klikke på nedoverpilen (⌄) markert Debug cell i figur 6, eller ved å trykke hurtigtasten CtrlShiftEnter. Programmet kjører da helt fram til bruddpunktet, deretter stopper kjøringen av programmet, og du kan bruke feilsøkingsverktøyene.

Bruk av feilsøkingsverktøyet

Når feilsøkeren har startet så ser du et bilde som vist i figur 7. Til venstre ser du de nåværende verdiene til alle variablene i programmet. I tillegg ser du verdiene av variablene i selve kodeblokken (se den grå teksten i linje 1–3). Figur 7 viser også feilsøkingsverktøyene i toppen av skjermen.

  1. F5 Bruk Continue-knappen (▶) for å kjøre programmet helt fram til bruddpunktet.
  2. F10 Bruk Step Over-knappen (↷) for å kjøre neste linje av programmet.
  3. ShiftF5 Bruk Disconnect-knappen (🔌) for å avslutte debuggingen.

Verktøyene i debuggeren


Variablenes verdier er synlige

Se verdien av alle variabler

Du kan se verdiene til alle variablene i koden din uten å bruke print()-funksjonen. Trykk på Jupyter Variables i menylinja (knappen ligger til høyre for + Code og + Markdown).

Kopiere kode til OneNote eller Word

Hvis du kopierer koden din (CtrlC) og limer inn i OneNote eller Word (CtrlV) så vil du se at fargeleggingen av koden din følger med.

Skriv tekst og matematikk i notatblokka

Etter at du har opprettet en ny tekstblokk med + Markdown-knappen er du klar til å skrive tekst. Markdown er et tekstformat som bruker enkle symboler for å formatere tekst. Det kraftigste verktøyet for skolebruk er nok muligheten til å skrive matematikk.

Enkel formatering i Markdown

# Overskrift på nivå 1
### Overskrift på nivå 3
*Stjerner rundt teksten uthever teksten med kursiv*
**Doble stjerner uthever teksten med fet skrift**

En tom linje starter et nytt avsnitt.

- En punktliste starter med bindestrek
1. Nummererte lister begynner med tall og punktum
2. Matematikk på linje med teksten skrives som $x=2$

Skrive matematikk i Markdown

Markdown i notatblokker har innebygd støtte for LaTeX-kode til matematikk. Dette er den vanligste måten å skrive matematikk internasjonalt. Det tar tid å lære seg alle funksjonene i LaTeX, men du kommer fort i gang og lærer deg det viktigste! Du kan også bruke LaTeX-kode til å skrive formler i Microsoft Word.

Til venstre så ser du koden du kan skrive i Markdownblokkene, og til høyre ser du hvordan resultatet blir dersom du velger å kjøre Markdownblokken ved å trykke på ▷. Legg merke til at vi bruker doble dollartegn ($$x=2$$) for å skrive matematikk som står alene på en linje og enkle dollartegn ($x=2$) for å skrive matematikk som står på samme linje som teksten.

$f(x) = 2x^3$
Vi vet at $a_n = a_1 + (n-1) \cdot d$, derfor…

$ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} $

$\sum_{i=1}^n 2^{i-1} = 1+2+4+8+\dots$

f(x)=2x3

Vi vet at an=a1+(n1)d, derfor…

x=b±b24ac2ai=1n2i1=1+2+4+8+

For å vise ferdig formatert tekst så kan du trykke på ✓ eller hurtigtastene ShiftEnter eller Esc, se figur 8.

Markdownkode i redigeringsmodus og visningsmodus

De viktigste matematikkfunksjonene i LaTeX finner du på denne nettsiden. En oversikt over nesten alle matematikkfunksjonene finner du hos LaTeX på Wikibooks.